
# 变量
# 笔记：
# python不需要指定数据类型，直接给变量赋值，变量会自己匹配类型
# # 并且python中变量名可以相同，更加灵活（本质上还是同一个变量反复赋值），不像Java中变量名不可重复的限制
# 数字类型
#int 整数
# a = 10
# print(a)
#
# a = a + 10
# print(a)
#
# # float 浮点数
# b = 1.23
# print(a+b)
# c = 0.1 + 0.2
# print(c)



# str字符串类型
# a = '姚青今年999岁了'
# print(a)
# a = "姚青今年999岁了"
# print(a)
# a = '"姚青今年999岁了"'
# print(a)
# a = "'姚青今年999岁了'"
# print(a)
# a = '''姚青今年999岁了'''
# print(a)

# 字符串拼接
# a = 'asc'
# b = '''456'''
# c = "999"
# print(a+b+c)
# d = 123
# print(a+b+c+d)
# # 当数据类型不一致时直接拼接会报错：TypeError: can only concatenate str (not "int") to str
# #解决方法
# print(a+b+c,d)

# 占位符

# b = '姚青今年%s岁 '%'999'
# print(b)
# b = '打野玩的好叫野王 %s 我辅助玩的好能叫我一声 %s吗'%('法师玩的好叫法王','父王')
# print(b)
# a = '121'
# b = '姚青，%3s'%'asfafsfasfa'
# print(b)
# #表示最低3长度 如果没有就用空格代替
# b = '姚青， %3.5s'%'asfasfasdfadsf。'
# print(b)
# #%3.5字符串的长度限制在3-5之间
# #也可以将浮点或者整数转换成字符串str() 缺点不能限制小数点后几位小数

# b = 'Hello %f'%123.456
# print(b)
# b = "Hello %.2f" %123.456 #保留小数点后两位小数,其余抹去
# print(b)

# b = 'Hello %3d'%1 # 默认左边加3个空格
# print(b)
# b = 'Hello %-3d'%1 # 右边加3个空格
# print(b)
# b = 'Hello %03d'%1 # 以0进行补齐位数（0~3位）
# print(b)

# a = 10
# print('%o'%a)

# a = 1
# b = 2
# c = f'Hello {a} {b}'
# print(f'c={c}')

# a='abc'
# #在语言中表示乘法
# a*2 #这样是没用了因为还是表达式 需要做的时 把表达式生成的结果给一个变量
# a=a*2

# a = ''
# a = a + '123'
# print(a)
#
# c = type(123)
# print(c)
# print(type(1))
# print(type(1.5))
# print(type(True))
# print(type('hello'))
# print(type(None))


# age = int(input("请输入你的年龄:"))
# print(type(age))
# print(age+1)

# a = "true"
# b = bool(a)
# print(type(b))
# print(b)

# word = "longzai" # 字符串:一个一个的字符串在一起
# # 在计算机里,下标都是从0开始的 可以通过下标来获取或者操作数据
# # 可以通过下标来获取或者修改指定位置的数据
# print(word[4])
# word[4] = 'x' # 错误  因为字符串是不可变的数据类型.
# # 对于字符串的任何操作,都不会改变原有的字符串!!!

# classinfo = "辽宁省沈阳市沈河区旭辉中心B座3301，33楼来测科技第19期班级"
# print(classinfo[5]) # classinfo[index] == > 获取指定下标上的数据
# # 切片语法   str[start:end:step]
# print(classinfo[0:3]) # # 包头不包尾部 辽宁省
# print(classinfo[9:13]) # 旭辉中心
# print(classinfo[2:]) # 如果只设置了start 会截取到最后 ：省沈阳市沈河区旭辉中心B座3301，33楼来测科技第19期班级
# print(classinfo[:6]) # 如果值设置了end,会从头开始截取 ：辽宁省沈阳市
# print(classinfo[-6:]) # 第19期班级
#
# #步长默认为1
# print(classinfo[0:8:2]) # 辽省阳沈
# print(classinfo[::-1]) #倒序输出
# # 步长不能为0
#
# print("--------------------")#

# print(classinfo[0:8:-1])# 没有数据
# print(classinfo[15:9:-1]) # 辉中心B座3,从角标15开始，取到9结束，但是不包括9，-1是倒着取
# print(classinfo[::])# 辽宁省沈阳市沈河区旭辉中心B座3301，33楼来测科技第19期班级
# print(classinfo[::-1]) #级班期91第技科测来楼33，1033座B心中辉旭区河沈市阳沈省宁辽

# a = [1]
# b = [a,1,'abc',True,1.23]
#
# print(b[3])

# a = '123abc'
# print(a[3])

#
# a = "0123456789"
# print("a1:"+a[0:9:2])#如果 start 为0，end 为9，step 为2，那么现实的数据应该是 [0,2,4,6,8]
# print("a2:"+a[-3:10])#如果 start 为负数，那么开始位置下标从后往前查
# print("a3:"+a[-6:-3])#开始结束都为负数，都从后往前查
# print("a4:"+a[-3:-6])#开始结束都为负数，但是结束下标大于开始下标，查询不出数据，因为超出范围了
# print("a5:"+a[::-1])#倒序输出
# print("a6:"+a[0:10:-1])#无数据
# print("a7:"+a[10:0:-2])#倒序查询：和 print("a5:"+a[::-1]) 类似


# a=['a','b','c','d']
#
# print('-'.join(a)) # 以 '-' 字符为分割，将列表中的数据拼接成一个字符串

#x = "abcdefghjkmlnopqrstuvwxyz"
# x = "abcdefg"
# print(len(x))#获取字符串长度
#
# print(x.find('c')) # 获取字符的下标，如果字符在字符串里不存在 结果是-1
# print(x.index('c')) # 使用idnex获取字符的下标，如果字符不存在 会报错
#
# print(x.find('c',4,7)) # 查看 4~7这个范围是否存在该字符,不存在给 -1
#
# print(x.rfind('c')) # 最大索引
# print(x.index('c'))# 最大索引 没有就报错

# #is开头的是判断  结果是一个布尔类型
# print('hello'.startswith('e')) # False
# print('hello'.endswith('llo'))# true
# print('he45llo'.isalpha()) # False    alpha字母
# print('good'.isdigit()) # False
# print('123'.isdigit())# True
# print('3.14'.isdigit())# False
# # alnum 判断是否由数字和字母组成
# print('ab12hello'.isalnum())# True
# print('hello'.isalnum())# True
# print('1234'.isalnum())# True
# print('4-1'.isalnum())# False
# print('        '.isspace())# True

# a = "aaaaa"
# b = a.replace("a","b",3)# 将 aaaaa 字符串前三个字母替换成 b
# print(b)
# # 结果：bbbaa


# a = "aa\naa\ner\n6345"
#
# print(a.splitlines())
#
# mystr = '今天天气好晴朗,处处好风光'
# print(mystr.partition('好'))
# print("ljust():" + "abc".ljust(10,"="))
# print("rjust():" + "abc".rjust(10,"+"))
# print("lstrp():" + ' abc '.lstrip())
# print("rstrip():" + ' abc '.rstrip())
# print("strip():" + ' abc '.strip())

# 等号连接的变量可以传递赋值
# a = b = c = d ="hello"
# print(a)

# 拆包
# m,n=3,5    #其实是一个元组拆成多个部分
# print(m)
# print(n)
#
# x = "hello",'good','yes'
# print(x)

# 拆包时,变量的个数和值的个数不一致,会报错
# y,z=1,2,3,4,5
# o,p,q=4,2

# * 表示可变长度的使用
# o,*p,q=1,2,3,4,5,6
# print(o,*p,q)


# a = "1+2+3+4"
# print(eval(a))

# import json
#
# data = {
#     	'nanbei':'haha',
#         'a':[1,2,3,4],
#         'b':(1,2,3)
#         }
#
# # 创建一个权限为 w+ 的文件
# with open('E:\python_Project\python\student.txt','w+') as f:
#
#     # 将对象中的内容 打印到刚刚创建的 student.txt 文件中
#     json.dump(data,f)
#
# print(data)


# import json
# person = {'name':"姚青",'age':999,"sss":'yyy'}
# m = json.dumps(person)
# print(m)
# print(type(m))
#
# import json
#
# date = {'name':'姚青','age':999}
# print(type(date))
# # 将Python对象编码成JSON字符串
# a = json.dumps(date)
# print(type(a))
# # 将JSON字符串编码成Python对象
# x = json.loads(a)
# print(type(x))
#
# print(x)

import json

data = { 'nanbei':'haha', 'a':[1,2,3,4], 'b':(1,2,3) }

# 在项目根目录创建一个权限为 w+ 的文件
with open('student.txt','w+') as f:
    # 将对象中的内容 打印到刚刚创建的 student.txt 文件中
    json.dump(data,f)

# 打开json_test.txt文件用于读写。文件指针将会放在文件的开头。
with open('student.txt','r+') as f:

    # 将读取出的内容转换成 Python 类型
    ssr = json.load(f)
    print(ssr)
    print(type(ssr))